![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Projekt jest już na githubie pod adresem
https://github.com/wookieb/bbcode Proszę o dodawanie informacji o bugach właśnie tam. UPDATE Wersja 1.2 [php bbcode, parser bbcode, advanced bbcode parser] Chciałbym dziś zaprezentować swój mechanizm parsujący kod bbcode oraz ułatwiający nam kontrolę nad tym czy tagi są prawidłowo używane. Klasa do pobrania: https://github.com/wookieb/bbcode/zipball/master Przykład działania: http://wookieb.pl/bbcode/test.php Readme.html w paczce oraz pod adresem http://wookieb.pl/bbcode/readme.html Licencja Skrypt wydany na licencji BSD. Dla własnego jak i komercyjnego użytku. Ustawienia parsera Ustawienia dla parsera znajdują się teraz w klasie BbCodeSettings. Ciekawsze z ustawień to Zaufany kod
Ustawienie kontroluje stopień sprawdzenia danych. Gdy kod bbcode sparsowaliśmy wcześniej to pobieramy jest wersję zaufaną i zapisujemy.
Przy ponownym odczytaniu kodu, możemy oznaczyć kod jak zaufany. Spowoduje to ominięcie wielu operacji kontroli atrybutów, przez co parsowanie jest szybsze. Kod $bbcode = new BbCode(); $text='[b] Bla Bla [i] Hehe'; $bbcode->parse($text, false); // nie chcemy wyniku wiec ustawiamy na false $code=$bbcode->getBbcode(); // [b] Bla Bla [i] Hehe[/i][/b] // $code zapisujemy // po pewnym czasie odczytujemy i parsujemy go jeszcze raz $bbcode->getSettings()->trustText = true; echo $bbcode->parse($code); Dostępność tagów Możliwe jest włączenie tylko niektórych tagów parsera Kod $bbcode = new BbCode(); $text = '[b]Pogrubienie[/b] [i]Kursywa[/i]'; echo $bbcode->parse($text); // <b>Pogrubienie</b> // <i>Kursywa</i> $bbcode->getSettings()->availableTags = array('b'); echo $bbcode->parse($text); // <b>Pogrubienie</b> // Kursywa Walidacja HTML (kolejności użycia) Domyślnie parser poprawia kolejność użycia tagów. np kod Kod [b] pogrubienie [i] Kursywa[/b] [ul] [li]Element listy [/b] [/i] Zamieni na Kod [b] pogrubienie [i] Kursywa[/i][/b] [ul] [li]Element listy[/li] [/ul] Tworzenie zajawek Parser potrafi tworzyć zajawke o odpowiedniej ilości znaków (ignorując przy tym tagi bbcode). Wspiera różne kodowania. Test pod adresem http://wookieb.pl/bbcode/cut_test.php Rozszerzanie możliwości Za pomocą tworzenia nowych tagów i dodawania ich specjalnych ustawień można rozszerzyć bbcode o dodatkowe tagi, możliwości. Szczególnie chciałbym zwrócić uwage na możliwość "przetrzepania" kodu przez funkcje filtrów, dzięki którym możemy tworzyć zaawansowane zależności. Informacje na temat ustawień dostępne pod linkiem http://wookieb.pl/bbcode/readme.html ZACHĘCAM DO OCEN, WNOSZENIA WŁASNYCH UWAG A TAKŻE PROPOZYCJI ZMIAN Mam nadzieję, że przyda się niejednej osobie, która dostrzeże możliwości użycia parsera NIE TYLKO do Bbcode ![]() Update - 2009.05.31 Dodałem tag youtube do paczki. Inne zmiany: - poprawiony generowany kod html dla taga IMG - poprawiona metoda wyszukiwania nazwy taga - poprawiona szybkość działania - przeniesienie ustawień do BbCodeSettings - poprawiona walidacji urli - dodatkowe zabezpieczenia przed XSS Ten post edytował wookieb 23.08.2011, 19:46:20
Powód edycji: [wookieb]: [wookieb]: [Spawnm]: update
-------------------- |
|
|
![]() |
![]()
Post
#121
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Wystarczy dodać katalog z BbCode do include_path
![]() -------------------- |
|
|
![]()
Post
#122
|
|
![]() Grupa: Zarejestrowani Postów: 1 086 Pomógł: 8 Dołączył: 10.12.2003 Ostrzeżenie: (0%) ![]() ![]() |
Wystarczy dodać katalog z BbCode do include_path Pewnie, tylko wyboraź sobie takie include_path ze wszystkimi projektami.![]() Kod .;include/tools/parsers/BbCode/;include/tools/parsers/Wiki/;include/tools/PHPTAL/;include/tools/Sblam/ Ogłupiałbym ![]() Poza tym nie chodzi mi o to, abym ja sobie z tym poradził. Uważam projekt za ciekawy i chciałem, aby każdemu nowemu jego użytkownikowi działało to out-of-box. Ten post edytował Zajec 8.03.2011, 12:57:59 |
|
|
![]()
Post
#123
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 3 Dołączył: 18.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
witam, sciagnalem sobie to, ale nie bardzo wiem jak sie teraz do tego zabrac...
mam sobie strony index.php oraz dodaj.php, na tym samym poziomie folder bbcode. no i co teraz musze zrobic, zebym w formularzu dodaj.php mogl sobie wpisac tekst i ubrac go w bbcode? dodaje do plikow
i co dalej? co mam zrobic, zebym mogl wpisac test i mi sie to w index.php wyswietlilo pogrubione? poza tym wyskakuje mi blad Kod Warning: include_once(Bbcode/Filters/Youtube.php) [function.include-once]: failed to open stream: No such file or directory in E:\wamp\test\templates\bbcode\BbCode.class.php on line 264 Warning: include_once() [function.include]: Failed opening 'Bbcode/Filters/Youtube.php' for inclusion (include_path='.;C:\php5\pear') in E:\wamp\test\templates\bbcode\BbCode.class.php on line 264 w php.ini znalazlem i odznaczylem Cytat Windows: "\path1;\path2" include_path = ".;c:\php\includes;E:\wamp\www\test\Bbcode\" ale to nic nie dalo ;/ prosze o pomoc |
|
|
![]()
Post
#124
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
a jak zrobić zwykłe prasowanie
Kod <br /> W smf bbcode i html jest mieszane podczas zapisu. Dzięki za pomoc -------------------- |
|
|
![]()
Post
#125
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Musisz wcześniej zamienić "<br />" na znak nowej linii.
-------------------- |
|
|
![]()
Post
#126
|
|
Grupa: Zarejestrowani Postów: 455 Pomógł: 49 Dołączył: 12.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
A czy jest możliwość parsowania youtube po samym ID?
@gorzat, użyj patcha Zajeca -------------------- Pozdrawiam,
mlawnik Cytat(nospor) Jedzmy gówno.... miliony much nie może się przecież mylić |
|
|
![]()
Post
#127
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Tak. W tagu podajesz po prostu tylko jego ID
-------------------- |
|
|
![]()
Post
#128
|
|
Grupa: Zarejestrowani Postów: 455 Pomógł: 49 Dołączył: 12.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
No ale jak podaje samo id to mi sie wyswietla ramka z youtubem i tekstem, ze not found.
Fakt, uzylem patcha zejeca i zmienilem player na nowy. Mozesz pomoc? Moj kod: github.com/marcinlawnik/BBcode-parser -------------------- Pozdrawiam,
mlawnik Cytat(nospor) Jedzmy gówno.... miliony much nie może się przecież mylić |
|
|
![]()
Post
#129
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Jestem kretynem. Mój błąd
W pliku Filter/Youtube.php zamień linijke na Ja też to potem wrzucę na githuba. -------------------- |
|
|
![]()
Post
#130
|
|
Grupa: Zarejestrowani Postów: 455 Pomógł: 49 Dołączył: 12.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Poprawione.
Zaraz dorzuce twoje przyklady i zrobie diff na twoim oryginale i mojej modyfikacji. Ew. po prostu zrobisz forka z mojej wersji. -------------------- Pozdrawiam,
mlawnik Cytat(nospor) Jedzmy gówno.... miliony much nie może się przecież mylić |
|
|
![]()
Post
#131
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Raczej nie forka. I tak będę wydawał nową wersję.
-------------------- |
|
|
![]()
Post
#132
|
|
Grupa: Zarejestrowani Postów: 455 Pomógł: 49 Dołączył: 12.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Czekam z nieciepliwością.
EDIT: Dla potomnych: Zawartosc paczki z pierwszego postu: GitHub Paczka z pierwszego postu z modyfikacjami: - patch zajeca - poprawka w youtube.php taka sama jak w patchu bo zajec ja pominal - poprawka 2 posty wyzej z $str i $bodyStr GitHub Ten post edytował mlawnik 10.04.2011, 19:46:46 -------------------- Pozdrawiam,
mlawnik Cytat(nospor) Jedzmy gówno.... miliony much nie może się przecież mylić |
|
|
![]()
Post
#133
|
|
![]() Grupa: Zarejestrowani Postów: 314 Pomógł: 44 Dołączył: 12.11.2010 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Jedna rzecz , czy parser blokuję html'a i XSS czy to już należy do nas?
|
|
|
![]()
Post
#134
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Sam blokuje.
-------------------- |
|
|
![]()
Post
#135
|
|
![]() Grupa: Zarejestrowani Postów: 314 Pomógł: 44 Dołączył: 12.11.2010 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Dzięki , zaoszczędzi mi to trochę włosów na głowie
![]() |
|
|
![]()
Post
#136
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie planuje, bo jest to zbyt zależne od widoku.
-------------------- |
|
|
![]()
Post
#137
|
|
![]() Grupa: Zarejestrowani Postów: 314 Pomógł: 44 Dołączył: 12.11.2010 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
W sumie dzięki takiemu łatwemu do zrozumienia rozpisaniu klasy bardzo łatwo dopisywać tagi. Jakby ktoś chciał tag spoiler z jQuery to ja zrobiłem to tak :
Zaraz po tag'u Quote w pliku Basic.php CSS : i w JS A tak ogólnie mówiąc to ja taki parser bym sprzedawał a nie publikował .. ![]() EDIT : Pozwoliłem sobie otworzyć tagi spowrotem ![]() ![]() Ten post edytował nekomata 13.04.2011, 19:26:41
Powód edycji: [wookieb]: Pozwoliłem sobie domknąć Ci tagi html
|
|
|
![]()
Post
#138
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 29.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Na początek napisze, że świetny parser stworzyłeś. Ale mam dwie kwestie. 1. Zagnieżdzanie tagów, np:
zamienia na: zamiast na: pomimo iż w filtrze taga 'b' jest :
inne tagi usuwa, jeśli się je poda jako niedozwolone 2. Chciałbym zrobić tak, żeby nie domykało tagów np. gdy zapomni się napisać [/quote] , to żeby nie robiło cytowania, teraz cytatem jest objęte wszystko do końca. Czy jest jakiś sposób aby tak się działo (a raczej nie działo ![]() pozdrawiam |
|
|
![]()
Post
#139
|
|
![]() Grupa: Zarejestrowani Postów: 314 Pomógł: 44 Dołączył: 12.11.2010 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
@mlawnik popraw tag youtube'a dokładnie mam na myśli linijkę 77 , usuń "allowfullscreen" bo w3c validator krzyczy a nic to allowfullscreen niezmienia bo to nie jest embed tylko iframe.
|
|
|
![]()
Post
#140
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
1) Tak zajmę się tym
2) Niestety raczej nie ma takiej opcji ale racja muszę o tym pomyśleć. -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 18:49 |